﻿using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
using System.Configuration;

public partial class _Certificado : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["codInscrito"] != null)
        {
            if (Convert.ToDateTime(Session["DataFimEmitirCertificado"].ToString()) < System.DateTime.Today)
            {
                this.divAviso.Visible = true;
                this.lblAviso.Text = "O período de impressão do certificado já está fechado. Data final: " + Session["DataFimEmitirCertificado"];
            }
            else
            {
                if(VerificarCertificadoLiberado())
                {
                    List<Trabalho> listTrabalho = VerificarExistenciaTrabalho();

                    if (listTrabalho != null && listTrabalho.Count > 0)//Máximo permitido de 2 trabalhos por aluno
                    {
                        for (int trabalho = 0; trabalho < listTrabalho.Count; trabalho++)
                        {
                            if (trabalho == 0)
                            {
                                this.divTrabalho1.Visible = true;
                                this.lblTrabalho1.Text = listTrabalho[trabalho].Titulo;
                            }
                            else if (trabalho == 1)
                            {
                                this.divTrabalho2.Visible = true;
                                this.lblTrabalho2.Text = listTrabalho[trabalho].Titulo;
                                break;
                            }
                        }
                    }
                    else
                    {
                        this.divAviso.Visible = true;
                        this.lblAviso.Text = "Não existem trabalhos publicados ou aprovados para este cpf.";
                    }
                }
                else
                {
                    this.divAviso.Visible = true;
                    this.lblAviso.Text = "Seu acesso ao certificado não está liberado pelo SGI.";
                }
            }            
        }
        else
            Response.Redirect("mensagens.aspx?id=7");
    }

    private bool VerificarCertificadoLiberado()
    {
        try
        {
            SqlCommand comSelect = new SqlCommand("SELECT * FROM faculdadeencontroinscritos WHERE codevento = @codevento AND CertificadoLiberado = '1' AND cpf = @cpf;");
            comSelect.Parameters.Add("codevento", Session["codEvento"].ToString());
            comSelect.Parameters.Add("cpf", Session["cpf"].ToString());
            DataTable dt = executarQuery(comSelect);

            if (dt != null && dt.Rows.Count > 0)
                return true;
            else
                return false;
        }
        catch
        {
            Response.Redirect("Mensagens.aspx?id=9");
            throw;
        }
    }

    private List<Trabalho> VerificarExistenciaTrabalho()
    {
        List<Trabalho> listTrabalho = new List<Trabalho>();
        try
        {
            SqlCommand comSelect = new SqlCommand("SELECT * FROM faculdadeencontrotrabalhos WHERE codevento = @codevento AND status = 'AP' AND cpf = @cpf;");
            comSelect.Parameters.Add("codevento", Session["codEvento"].ToString());
            comSelect.Parameters.Add("cpf", Session["cpf"].ToString());
            DataTable dt = executarQuery(comSelect);

            if (dt != null && dt.Rows.Count > 0)
            {
                for (int linha = 0; linha < dt.Rows.Count; linha++)
                {
                    Trabalho t = new Trabalho();
                    t.Titulo = dt.Rows[linha]["Titulo"].ToString();
                    t.Autor = dt.Rows[linha]["Autor"].ToString();
                    t.CoAutor = dt.Rows[linha]["CoAutor"].ToString();
                    listTrabalho.Add(t);
                }

                Session["listTrabalho"] = listTrabalho;
            }
        }
        catch
        {
            Response.Redirect("Mensagens.aspx?id=8");
        }

        return listTrabalho;
    }

    protected void btnGerarCertificado_Click(object sender, EventArgs e)
    {
        List<Trabalho> listTrabalho = (List<Trabalho>)Session["listTrabalho"];

        Session["Trabalho"] = listTrabalho[0].Titulo;
        Session["NomeAutor"] = listTrabalho[0].Autor;
        Session["CoAutor"] = listTrabalho[0].CoAutor;
        Response.Redirect("CertificadoImpressao.aspx");
    }

    protected void btnGerarCertificado2_Click(object sender, EventArgs e)
    {
        List<Trabalho> listTrabalho = (List<Trabalho>)Session["listTrabalho"];

        Session["Trabalho"] = listTrabalho[1].Titulo;
        Session["NomeAutor"] = listTrabalho[1].Autor;
        Session["CoAutor"] = listTrabalho[1].CoAutor;
        Response.Redirect("CertificadoImpressao.aspx");
    }

    private DataTable executarQuery(SqlCommand command)
    {
        DataTable dt = new DataTable();
        SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["conexao_intranet"].ConnectionString);

        try
        {
            command.Connection = conn;
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            adapter.Fill(dt);
        }
        catch { throw; }
        finally { conn.Close(); }

        return dt;
    }

    private class Trabalho
    {
        public string Titulo { get; set; }
        public string Autor { get; set; }
        public string CoAutor { get; set; }
    }
}
